/**
    1.结构体是值类型，类是引用类型
    2.结构体存在栈中，类存在堆中
    3.结构体成员不能使用protected访问修饰符，而类可以
    4.结构体成员变量申明不能指定初始值，而类可以
    5.结构体不能申明无参的构造函数，而类可以
    6.结构体申明有参构造函数后，无参构造不会被顶掉
    7.结构体不能申明析构函数，而类可以
    8.结构体不能被继承，而类可以
    9.结构体需要在构造函数中初始化所有成员变量，而类随意
    10.结构体不能被静态static修饰（不存在静态结构体），而类可以
    11.结构体不能在自己内部申明和自己一样的结构体变量，而类可以
    12.结构体和类都可以继承接口,因为接口是行为的抽象
使用场景:
    1. 想要使用继承和多态时,直接淘汰结构体
    2. 对象是数据集合时,优先考虑结构体,如位置和坐标等等。
    3. 经常被赋值转递的对象,改变赋值对象原对象不想跟着改变使用结构体
*/


/**
相同点:
    1. 都可以被继承
    2. 都不能直接实例化
    3. 都可以包含方法声明
    4. 子类必须实现未实现的方法
    5. 遵守里氏替换原则
区别:
    1. 抽象类可以有构造函数,接口不能
    2. 抽象类只能被单一继承,接口可以被继承多个
    3. 抽象类中可以有成员变量,接口中不能
    4. 抽象类中可以声明方法成员,虚方法,抽象方法,静态方法;接口中只能声明没有实现的抽象方法
    5. 抽象类方法可以使用访问修饰符;接口中建议不写,默认public
使用:
    1. 表示对象用抽象类,表示行为拓展的用接口
    2. 不同对象的公共行为,可以使用接口来实现
*/
